<?php
namespace app\admin\controller;
use think\Db;
use think\Request;
use think\Controller;
use think\Session;
use think\Config;
//管理员管理
class Staff extends Common
{
	
	//管理员列表
	function index(){
		$where['a.sid']=array('neq',1);
		$name=Request()->param('name');
		//用户名
		$real_name=Request()->param('real_name');
		//真实姓名
		$is_enable=Request()->param('is_enable');
		//状态
		$page=Request()->param('page');
		$size=Request()->param('size');
		//分页
		if($page<1){
			$page=1;
		}
		if($size<15){
			$size=15;
		}
		$now=($page-1)*$size;
		if($name!=''){
			$where['a.name']=array('like','%'.$name.'%');
		}
		if($real_name!=''){
			$where['a.real_name']=array('like','%'.$real_name.'%');
		}
		if($is_enable>0){
			if($is_enable==1){
				$where['a.is_enable']=1;
			}else{
				$where['a.is_enable']=array('neq',1);
			}
		}
		$data=Db::name('staff a')
			->field("a.*,b.name as role_name")
			->join('fr_role b','b.rid=a.role_id','left')
			->where($where)
			->limit("$now,$size")
			->order("a.sid desc")
			->select();
		//管理员信息
		$count=Db::name('staff a')
			->where($where)
			->count();
		$page_str=page($page,$size,$count,count($data));//分页
		$this->assign('name',$name);
		$this->assign('real_name',$real_name);
		$this->assign('is_enable',$is_enable);
		$this->assign('data',$data);
		$this->assign('count',$count);
		$this->assign('page',$page);
		$this->assign('size',$size);
		$this->assign('page_str',$page_str);
		return $this->fetch();
	}
	//管理员冻结
	function user_del(){
		$permissions=$this->check_permissions();
		if($permissions['code']!=200){
			return $permissions;die;
		}
		//ajax必须写上这些（ajax判断权限）
		if(Request()->isAjax()){
			$id=Request()->post('id');
			$res=Db::name('staff')
				->where(array('sid'=>$id))
				->update(array('is_enable'=>0));
			if($res){
				return return_json(array('code'=>1,'msg'=>'冻结成功！'),'管理员冻结');die;
			}else{
				return return_json(array('code'=>0,'msg'=>'冻结失败！'),'管理员冻结');die;
			}
		}
	}
	//管理员解冻
	function user_use(){
		//ajax必须写上这些（ajax判断权限）
		if(Request()->isAjax()){
			$permissions=$this->check_permissions();
			if($permissions['code']!=200){
				return $permissions;die;
			}
			$id=Request()->post('id');
			$res=Db::name('staff')
				->where(array('sid'=>$id))
				->update(array('is_enable'=>1));
			if($res){
				return return_json(array('code'=>1,'msg'=>'解冻成功！'),'管理员解冻');die;
			}else{
				return return_json(array('code'=>0,'msg'=>'解冻失败！'),'管理员解冻');die;
			}
		}
	}
	//添加管理员
	function add_user(){
		if(Request()->isAjax()){
			$permissions=$this->check_permissions();
			if($permissions['code']!=200){
				return $permissions;die;
			}
			$data=Request()->post();
			$name=$data['name'];
			//用户名
			$password=$data['password'];
			//密码
			$real_name=$data['real_name'];
			//真实姓名
			$phone=$data['phone'];
			//电话
			$email=$data['email'];
			//邮箱
			$role_id=$data['role_id'];
			//角色id
			if(isset($data['is_enable'])){
				$is_enable=1;
			}else{
				$is_enable=0;
			}
			//状态
			$check_name=check_format($name,Config::get('username'));
			//验证用户格式
			if(!$check_name){
				//用户名格式错误
				return return_json(array('code'=>0,'msg'=>'用户名是6~20位数字或英文'),'添加管理员');die;
			}
			$check_name=check_format($password,Config::get('password'));
			//验证用户格式
			if(!$check_name){
				//用户名格式错误
				return return_json(array('code'=>0,'msg'=>'密码是6~20位数字或英文'),'添加管理员');die;
			}
			$user=Db::name('staff a')
				->where(array('name'=>$name))
				->find();
			if(!empty($user)){
				return return_json(array('code'=>0,'msg'=>'该用户名已在使用'),'添加管理员');die;
			}
			$role=Db::name('role')
				->where(array('rid'=>$role_id,'status'=>1))
				->find();
			//角色查询
			if(empty($role)){
				return return_json(array('code'=>0,'msg'=>'无法使用该角色'),'添加管理员');die;
			}
			$permissions=$role['menus'];
			
			
			$res=Db::name('staff')
				->insert(array('name'=>$name,'is_enable'=>$is_enable,'password'=>md5(md5($password)),'real_name'=>$real_name,'phone'=>$phone,'email'=>$email,'role_id'=>$role_id,'permissions'=>$permissions,'add_time'=>time(),'add_user_id'=>session('uid'),'add_user_name'=>session('user.real_name')));
			//添加管理员
			if($res){
				return return_json(array('code'=>1,'msg'=>'管理员添加成功！'),'添加管理员');die;
			}else{
				return return_json(array('code'=>0,'msg'=>'管理员添加失败！'),'添加管理员');die;
			}
		}else{
			$role=Db::name('role')
				->where(array('status'=>1,'rid'=>array('neq',1)))
				->select();
			//角色列表
			$this->assign('role',$role);
			return $this->fetch();
		}
	}
	//修改管理员
	function reuser(){
		if(Request()->isAjax()){
			$permissions=$this->check_permissions();
			if($permissions['code']!=200){
				return $permissions;die;
			}
			$data=Request()->post();
			$id=$data['id'];
			$name=$data['name'];
			$password=$data['password'];
			$real_name=$data['real_name'];
			$phone=$data['phone'];
			$email=$data['email'];
			$role_id=$data['role_id'];
			if(isset($data['is_enable'])){
				$is_enable=1;
			}else{
				$is_enable=0;
			}
			$check_name=check_format($name,Config::get('username'));
			//验证用户格式
			if(!$check_name){
				//用户名格式错误
				return return_json(array('code'=>0,'msg'=>'用户名是6~20位数字或英文'),'修改管理员');die;
			}
			if($password!=''){
				$check_name=check_format($password,Config::get('password'));
				//验证用户格式
				if(!$check_name){
					//用户名格式错误
					return return_json(array('code'=>0,'msg'=>'密码是6~20位数字或英文'),'修改管理员');die;
				}
			}
			$user1=Db::name('staff a')
				->where(array('sid'=>$id))
				->find();
			if(empty($user1)){
				return return_json(array('code'=>0,'msg'=>'没有该用户'),'修改管理员');die;
			}
			$user=Db::name('staff a')
				->where(array('name'=>$name,'sid'=>array('neq',$id)))
				->find();
			if(!empty($user)){
				return return_json(array('code'=>0,'msg'=>'该用户名已在使用'),'修改管理员');die;
			}
			$role=Db::name('role')
				->where(array('rid'=>$role_id,'status'=>1))
				->find();
			if(empty($role)){
				return return_json(array('code'=>0,'msg'=>'无法使用该角色'),'修改管理员');die;
			}
			$permissions=$role['menus'];
			$data1=array('name'=>$name,'is_enable'=>$is_enable,'real_name'=>$real_name,'phone'=>$phone,'email'=>$email,'role_id'=>$role_id,'permissions'=>$permissions);
			if($password!=''){
				$data1['password']=md5(md5($password));
			}
			$res=Db::name('staff')
				->where(array('sid'=>$id))
				->update($data1);
			if($res){
				return return_json(array('code'=>1,'msg'=>'管理员修改成功！'),'修改管理员');die;
			}else{
				return return_json(array('code'=>0,'msg'=>'管理员修改失败！'),'修改管理员');die;
			}
		}else{
			$id=Request()->get('id');
			$user=Db::name('staff a')
				->where(array('sid'=>$id))
				->find();
			$role=Db::name('role')
				->where(array('status'=>1,'rid'=>array('neq',1)))
				->select();
			$this->assign('role',$role);
			$this->assign('id',$id);
			$this->assign('user',$user);
			return $this->fetch();
		}
	}
}